package com.lu;

import java.util.Scanner;

/**
 * @author lufeng
 * @date 2021/9/5 10:43
 */
    /*
        已知一个数组 arr = {19, 28, 37, 46, 50};
        键盘录入一个数据，查找该数据在数组中的索引。
	    并在控制台输出找到的索引值。如果没有查找到，则输出-1

        需求: 查找元素在数组中出现的索引位置 - 考虑重复的问题
     */
public class test4_4 {
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 37, 37};

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查找的数据:");
        int num = sc.nextInt();
        //调用get方法 并将得到的数据传给数组indexs
        int[] indexs = getIndexs(num, arr);
        //对比一下数组是否拥有长度
        if(indexs.length==0){
            System.out.println("您输入的元素不存在，请重新输入！");
        }else {
            System.out.println("查找索引如下");
            for (int i = 0; i < arr.length; i++) {
                System.out.println(indexs[i]);
            }
        }
    }
    //通过方法来实现查找输入的数字 在数组中的索引位置
    public static int[] getIndexs(int num, int []arr){
        //定义一个变量 用于计算得到的新数组长度
        int count = 0;
        //遍历一遍数组
        for (int i = 0; i < arr.length; i++) {
            //如果数组中有和输入的数据大小一致
            if (arr[i]==num){
                //长度变量自增
                count++;
            }
        }
        //定义一个新数组 长度是第一遍遍历而来
        int [] indexs =new int [count] ;
        int j =0;
        //在遍历一遍原数组
        for (int i = 0; i < arr.length; i++) {

            if (arr[i]==num){
                //找到的一个相同的数 就依次存入新数组
                //存入的第一个数索引值为0 依次递增
                indexs[j]=i;
                j++;
            }
        }
        //int [] intdexs = {2,3,4}  2对应0号索引 依次后推
        return indexs;

    }
}
